<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="lib.css" type='text/css' />
<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
<link rel='start' href='../index.html' title='Python documentation Index' />
<link rel="first" href="lib.html" title='Python library Reference' />
<link rel='contents' href='contents.html' title="Contents" />
<link rel='index' href='genindex.html' title='Index' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="next" href="module-struct.html" />
<link rel="prev" href="module-string.html" />
<link rel="parent" href="strings.html" />
<link rel="next" href="re-syntax.html" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name='aesop' content='information' />
<title>4.2 re -- Regular expression operations</title>
</head>
<body>
<div class="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="4.1.4 deprecated string functions"
  href="node42.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="4. string Services"
  href="strings.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="4.2.1 regular Expression Syntax"
  href="re-syntax.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="node42.html">4.1.4 Deprecated string functions</a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="strings.html">4. String Services</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="re-syntax.html">4.2.1 Regular Expression Syntax</a>
</div>
<hr /></div>
</div>
<!--End of Navigation Panel-->

<h1><a name="SECTION006200000000000000000">
4.2 <tt class="module">re</tt> --
         Regular expression operations</a>
</h1>
<a name="module-re"></a>

<p>

<p>
This module provides regular expression matching operations similar to
those found in Perl.  Regular expression pattern strings may not
contain null bytes, but can specify the null byte using the
<code>\<var>number</var></code> notation.  Both patterns and strings to be
searched can be Unicode strings as well as 8-bit strings.  The
<tt class="module">re</tt> module is always available.

<p>
Regular expressions use the backslash character ("<tt class="character">\</tt>") to
indicate special forms or to allow special characters to be used
without invoking their special meaning.  This collides with Python's
usage of the same character for the same purpose in string literals;
for example, to match a literal backslash, one might have to write
<code>'\\\\'</code> as the pattern string, because the regular expression
must be "<tt class="samp">\\</tt>", and each backslash must be expressed as
"<tt class="samp">\\</tt>" inside a regular Python string literal.

<p>
The solution is to use Python's raw string notation for regular
expression patterns; backslashes are not handled in any special way in
a string literal prefixed with "<tt class="character">r</tt>".  So <code>r"\n"</code> is a
two-character string containing "<tt class="character">\</tt>" and "<tt class="character">n</tt>",
while <code>"\n"</code> is a one-character string containing a newline.
Usually patterns will be expressed in Python code using this raw
string notation.

<p>
<div class="seealso">
  <p class="heading">See Also:</p>

  <dl compact="compact" class="seetitle">
    <dt><em class="citetitle"
        >Mastering Regular Expressions</em></dt>
    <dd>Book on regular expressions
            by Jeffrey Friedl, published by O'Reilly.  The second 
            edition of the book no longer covers Python at all, 
            but the first edition covered writing good regular expression
            patterns in great detail.</dd>
  </dl>
</div>

<p>

<p><br /></p><hr class='online-navigation' />
<div class='online-navigation'>
<!--Table of Child-Links-->
<a name="CHILD_LINKS"><strong>Subsections</strong></a>

<ul class="ChildLinks">
<li><a href="re-syntax.html">4.2.1 Regular Expression Syntax</a>
<li><a href="matching-searching.html">4.2.2 Matching vs Searching</a>
<li><a href="node46.html">4.2.3 Module Contents</a>
<li><a href="re-objects.html">4.2.4 Regular Expression Objects</a>
<li><a href="match-objects.html">4.2.5 Match Objects</a>
<li><a href="node49.html">4.2.6 Examples</a>
</ul>
<!--End of Table of Child-Links-->
</div>

<div class="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="4.1.4 deprecated string functions"
  href="node42.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="4. string Services"
  href="strings.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="4.2.1 regular Expression Syntax"
  href="re-syntax.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="node42.html">4.1.4 Deprecated string functions</a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="strings.html">4. String Services</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="re-syntax.html">4.2.1 Regular Expression Syntax</a>
</div>
</div>
<hr />
<span class="release-info">Release 2.5.1, documentation updated on 18th April, 2007.</span>
</div>
<!--End of Navigation Panel-->
<address>
See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
</address>
</body>
</html>
